home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / +system+ / tools / gui / bgui.lha / bgui / Examples / Source / Backdrop.c < prev    next >
C/C++ Source or Header  |  2000-02-27  |  13KB  |  228 lines

  1. /*
  2.  * @(#) $Header: /cvsroot/bgui/examples/Attic/Backdrop.c,v 1.1.2.1 1998/02/28 17:44:53 mlemos Exp $
  3.  *
  4.  * Backdrop.c
  5.  *
  6.  * (C) Copyright 1998 Manuel Lemos.
  7.  * (C) Copyright 1995 Jaba Development.
  8.  * (C) Copyright 1995 Jan van den Baard.
  9.  * All Rights Reserved.
  10.  *
  11.  * $Log: Backdrop.c,v $
  12.  * Revision 1.1.2.1  1998/02/28 17:44:53  mlemos
  13.  * Ian sources
  14.  *
  15.  *
  16.  */
  17.  
  18. /* Execute me to compile with DICE V3.0
  19. dcc Backdrop.c -mi -ms -mRR -proto -lbgui
  20. quit
  21. */
  22.  
  23. #include "DemoCode.h"
  24. #include <graphics/displayinfo.h>
  25.  
  26. /*
  27.  *      Quit object ID.
  28.  */
  29. #define ID_QUIT         1
  30.  
  31. /*
  32.  *      A borderless window ;)
  33.  */
  34. VOID Say( struct Screen *screen )
  35. {
  36.         Object                  *WO_Window, *GO_Ok;
  37.         ULONG                    signal, rc;
  38.         BOOL                     running = TRUE;
  39.  
  40.         /*
  41.          *      Create the window.
  42.          */
  43.         WO_Window = WindowObject,
  44.                 WINDOW_Borderless,      TRUE,
  45.                 WINDOW_SmartRefresh,    TRUE,
  46.                 WINDOW_RMBTrap,         TRUE,
  47.                 WINDOW_AutoAspect,      TRUE,
  48.                 WINDOW_Screen,          screen,
  49.                 WINDOW_MasterGroup,
  50.                         VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 3 ),
  51.                                 FRM_Type,       FRTYPE_BUTTON,
  52.                                 FRM_BackFill,   SHINE_RASTER,
  53.                                 StartMember,
  54.                                         InfoObject,
  55.                                                 FRM_Type,               FRTYPE_BUTTON,
  56.                                                 FRM_Recessed,           TRUE,
  57.                                                 INFO_TextFormat,        ISEQ_C "This demonstration shows you how to\n"
  58.                                                                         "create a backdrop, borderless window with BGUI.\n\n"
  59.                                                                         "You may recognize the GUI as the main window\n"
  60.                                                                         "of SPOT but that's because I could not\n"
  61.                                                                         "come up with something original.\n\n"
  62.                                                                         "Just click on " ISEQ_B "Quit" ISEQ_N " to exit the demo.",
  63.                                                 INFO_FixTextWidth,      TRUE,
  64.                                                 INFO_MinLines,          8,
  65.                                         EndObject,
  66.                                 EndMember,
  67.                                 StartMember,
  68.                                         HGroupObject,
  69.                                                 VarSpace( DEFAULT_WEIGHT ),
  70.                                                 StartMember, GO_Ok = KeyButton( "_OK", ID_QUIT ), EndMember,
  71.                                                 VarSpace( DEFAULT_WEIGHT ),
  72.                                         EndObject, FixMinHeight,
  73.                                 EndMember,
  74.                         EndObject,
  75.         EndObject;
  76.  
  77.         /*
  78.          *      OK?
  79.          */
  80.         if ( WO_Window ) {
  81.                 /*
  82.                  *      Add gadget key.
  83.                  */
  84.                 if ( GadgetKey( WO_Window, GO_Ok, "o" )) {
  85.                         /*
  86.                          *      Open the window.
  87.                          */
  88.                         if ( WindowOpen( WO_Window )) {
  89.                                 GetAttr( WINDOW_SigMask, WO_Window, &signal );
  90.                                 /*
  91.                                  *      Wait for somebody to click
  92.                                  *      on the "OK" gadget.
  93.                                  */
  94.                                 do {
  95.                                         Wait( signal );
  96.                                         while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
  97.                                                 if ( rc == ID_QUIT )
  98.                                                         running = FALSE;
  99.                                         }
  100.                                 } while ( running );
  101.                         }
  102.                 }
  103.                 DisposeObject( WO_Window );
  104.         }
  105. }
  106.  
  107. /*
  108.  *      Here we go...
  109.  */
  110. VOID StartDemo( void )
  111. {
  112.         struct Screen           *myscreen, *wblock;
  113.         struct DrawInfo         *dri;
  114.         struct Window           *window;
  115.         Object                  *WO_Window;
  116.         APTR                     wlock;
  117.         ULONG                    mode, rc, signal;
  118.         BOOL                     running = TRUE;
  119.  
  120.         /*
  121.          *      Lock the workbench screen.
  122.          */
  123.         if ( wblock = LockPubScreen( "Workbench" )) {
  124.                 /*
  125.                  *      Obtain it's DrawInfo.
  126.                  */
  127.                 if ( dri = GetScreenDrawInfo( wblock )) {
  128.                         /*
  129.                          *      And mode ID.
  130.                          */
  131.                         if (( mode = GetVPModeID( &wblock->ViewPort )) != INVALID_ID ) {
  132.                                 /*
  133.                                  *      Open a screen ala your workbench.
  134.                                  */
  135.                                 if ( myscreen = OpenScreenTags( NULL, SA_Depth,         dri->dri_Depth,
  136.                                                                       SA_Width,         wblock->Width,
  137.                                                                       SA_Height,        wblock->Height,
  138.                                                                       SA_DisplayID,     mode,
  139.                                                                       SA_Pens,          dri->dri_Pens,
  140.                                                                       SA_Title,         "Backdrop Demo.",
  141.                                                                       TAG_END )) {
  142.                                         /*
  143.                                          *      Create a simple backdrop window on
  144.                                          *      the screen whilst keeping the screen
  145.                                          *      title visible.
  146.                                          */
  147.                                         WO_Window = WindowObject,
  148.                                                 WINDOW_SmartRefresh,            TRUE,
  149.                                                 WINDOW_Backdrop,                TRUE,
  150.                                                 WINDOW_ShowTitle,               TRUE,
  151.                                                 WINDOW_CloseOnEsc,              TRUE,
  152.                                                 WINDOW_AutoAspect,              TRUE,
  153.                                                 WINDOW_NoBufferRP,              TRUE,
  154.                                                 WINDOW_Screen,                  myscreen,
  155.                                                 WINDOW_MasterGroup,
  156.                                                         HGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  157.                                                                 StartMember,
  158.                                                                         VGroupObject, Spacing( 4 ),
  159.                                                                                 StartMember, Button( "Message list...", 0 ), EndMember,
  160.                                                                                 StartMember, Button( "Messages...",     0 ), EndMember,
  161.                                                                                 VarSpace( 40 ),
  162.                                                                                 StartMember, Button( "Import...",       0 ), EndMember,
  163.                                                                                 StartMember, Button( "Export...",       0 ), EndMember,
  164.                                                                                 StartMember, Button( "Maintenance...",  0 ), EndMember,
  165.                                                                                 StartMember, Button( "Optimize...",     0 ), EndMember,
  166.                                                                                 VarSpace( 40 ),
  167.                                                                                 StartMember, Button( "Poll...",         0 ), EndMember,
  168.                                                                                 StartMember, Button( "File request...", 0 ), EndMember,
  169.                                                                                 VarSpace( 40 ),
  170.                                                                                 StartMember, Button( "Iconify",         0 ), EndMember,
  171.                                                                                 StartMember, Button( "Quit",            ID_QUIT ), EndMember,
  172.                                                                         EndObject, FixMinSize,
  173.                                                                 EndMember,
  174.                                                                 StartMember, ListviewObject, EndObject, EndMember,
  175.                                                         EndObject,
  176.                                         EndObject;
  177.  
  178.                                         /*
  179.                                          *      Window OK?
  180.                                          */
  181.                                         if ( WO_Window ) {
  182.                                                 /*
  183.                                                  *      Open the window.
  184.                                                  */
  185.                                                 if ( window = WindowOpen( WO_Window )) {
  186.                                                         /*
  187.                                                          *      Show an explanation window.
  188.                                                          */
  189.                                                         wlock = BGUI_LockWindow( window );
  190.                                                         Say( myscreen );
  191.                                                         BGUI_UnlockWindow( wlock );
  192.                                                         /*
  193.                                                          *      Pick up the window signal.
  194.                                                          */
  195.                                                         GetAttr( WINDOW_SigMask, WO_Window, &signal );
  196.                                                         /*
  197.                                                          *      Event loop...
  198.                                                          */
  199.                                                         do {
  200.                                                                 Wait( signal );
  201.                                                                 while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
  202.                                                                         switch ( rc ) {
  203.  
  204.                                                                                 case    WMHI_CLOSEWINDOW:
  205.                                                                                 case    ID_QUIT:
  206.                                                                                         running = FALSE;
  207.                                                                                         break;
  208.                                                                         }
  209.                                                                 }
  210.                                                         } while ( running );
  211.                                                 } else
  212.                                                         Tell( "Unable to open the window\n" );
  213.                                                 DisposeObject( WO_Window );
  214.                                         } else
  215.                                                 Tell( "Unable to create the window object\n" );
  216.                                         CloseScreen( myscreen );
  217.                                 } else
  218.                                         Tell( "Unable to open the screen\n" );
  219.                         } else
  220.                                 Tell( "Unknown screen mode\n" );
  221.                         FreeScreenDrawInfo( wblock, dri );
  222.                 } else
  223.                         Tell( "Unable to get DrawInfo\n" );
  224.                 UnlockPubScreen( NULL, wblock );
  225.         } else
  226.                 Tell( "Unable to lock the Workbench screen\n" );
  227. }
  228.